OpenCV+Python Harris角点检测

您所在的位置:网站首页 python opencv角点检测 OpenCV+Python Harris角点检测

OpenCV+Python Harris角点检测

2023-09-20 12:00| 来源: 网络整理| 查看: 265

角点检测是提取图像特征的一个方法。

定义

狭义:两条边的交点 广义:图像中具有某些数学特征的坐标。如局部最大或最小的灰度

如上图有三个颜色的框框,如果我们对蓝色框框进行移动,无论是水平还是垂直的方向移动都不会对框框内像素造成很大的变化,这种是内部区域。 如果我们对黑色的框框进行移动,那么水平方向上移动像素值是不会有什么太大的变化的,如果是垂直方向上移动那么就会变化很大,这种一般称为边缘区域。 对红色的框框进行移动,无论是往哪个方向进行偏移都会对框框内的像素值造成很大的变动,那么红色框住的区域的边角点,我们就称为角点。 Harris角点检测

原理博文1 原理博文2 稳定性高,尤其对L型角点(也就是直角)检测精度高。缺点也是明显的,就是运算速度慢,对图片大小敏感。

cv2.cornerHarris(src, block_size, ksize, k) ''' src 必须是float32 block_size 邻域大小,越大表示用更粗的点标记角点 ksize Sobel求导中的窗口大小 k 自由参数,取值[0.04, 0.06] ''' 实战 import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread('forGrab.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = np.float32(gray) dst_block9_ksize19 = cv2.cornerHarris(gray, 9, 19, 0.04) img1 = np.copy(img) img1[dst_block9_ksize19 > 0.01 * dst_block9_ksize19.max()] = [0, 0, 255] dst_block5_ksize19 = cv2.cornerHarris(gray, 5, 19, 0.04) img2 = np.copy(img) img2[dst_block5_ksize19 > 0.01 * dst_block5_ksize19.max()] = [0, 0, 255] dst_block9_ksize5 = cv2.cornerHarris(gray, 9, 5, 0.04) img3 = np.copy(img) img3[dst_block9_ksize5 > 0.01 * dst_block9_ksize5.max()] = [0, 0, 255] dst_block9_ksize31 = cv2.cornerHarris(gray, 9, 31, 0.04) img4 = np.copy(img) img4[dst_block9_ksize31 > 0.01 * dst_block9_ksize31.max()] = [0, 0, 255] dst_block9_ksize19_k6 = cv2.cornerHarris(gray, 9, 19, 0.06) img5 = np.copy(img) img5[dst_block9_ksize19_k6 > 0.01 * dst_block9_ksize19_k6.max()] = [0, 0, 255] dst_block9_ksize19_k6_1e_5 = cv2.cornerHarris(gray, 9, 19, 0.06) img6 = np.copy(img) img6[dst_block9_ksize19_k6_1e_5 > 0.00001 * dst_block9_ksize19_k6_1e_5.max()] = [0, 0, 255] titles = ["Original", "block9_ksize19", "dst_block5_ksize19", "dst_block9_ksize5", "dst_block9_ksize31", "dst_block9_ksize19_k6", "dst_block9_ksize19_k6_1e_5"] imgs = [img, img1, img2, img3, img4, img5, img6] for i in range(len(titles)): plt.subplot(3, 3, i + 1), plt.imshow(imgs[i]), plt.title(titles[i]) plt.xticks([]), plt.yticks([]) plt.show() Harris角点检测


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3